public class Demo7 {
    public static void main(String[] args) throws InterruptedException {
        // Thread线程中有一个线程的标志位,可以判断当前循环是否结束
        Thread t = new Thread(() -> {
            /*
             * Thread.currentThread() 获取当前线程的实例
             * t.interrupt() 把该线程内部的标志位设置成true
             * isInterrupt() 判断该线程内部的标志位
             *
             * 正常来说sleep休眠时间到,才会被唤醒
             * 但是如果使用t.interrupt(),该方法会触发sleep内部的一个异常,从而提前被唤醒
             * */
            while (!Thread.currentThread().isInterrupted()) {
                System.out.println("线程正在执行");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        });
        t.start();

        Thread.sleep(5000);
        System.out.println("让t线程终止");
        t.interrupt();
    }
}
